#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <set>
#include <bitset>
#include <utility>
using namespace std;

const double eps = 1e-6;
const int INF = 0x3f3f3f3f;

typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef pair<int, LL> PIL;

inline void quickread() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
}

const int N = 1e5 + 10;

struct Record
{
	string id, name;
	int score;
} record[N];

int n, m;

bool cmp1(Record & r1, Record & r2) {
	return r1.id < r2.id;
}

bool cmp2(Record & r1, Record & r2) {
	if (r1.name == r2.name) return r1.id < r2.id;
	return r1.name < r2.name;
}

bool cmp3(Record & r1, Record & r2) {
	if (r1.score == r2.score) return r1.id < r2.id;
	return r1.score < r2.score;
}

inline void solution() {
	cin >> n >> m;
	for (int i = 0; i < n; i ++ ) 
		cin >> record[i].id >> record[i].name >> record[i].score;

	switch(m) {
		case 1: sort(record, record + n, cmp1);break;
		case 2: sort(record, record + n, cmp2);break;
		case 3: sort(record, record + n, cmp3);break;
	}

	for (int i = 0; i < n; i ++ ) 
		cout << record[i].id << " " << record[i].name << " " << record[i].score << endl;

	return ;
}

int main() {
	freopen("input.txt", "r", stdin);
	quickread();
	solution();
	return 0;
}